fixing float->int conversions
authorØyvind Kolås <ok@src.gnome.org>
Fri, 9 Sep 2005 11:11:47 +0000 (11:11 +0000)
committerØyvind Kolås <ok@src.gnome.org>
Fri, 9 Sep 2005 11:11:47 +0000 (11:11 +0000)
ChangeLog
babl/base/type-u16.c
babl/base/type-u32.c
babl/base/type-u8.c
extensions/CIE-Lab.c

index 0c8cb01e91431a0951aac7f7662aabeb8a29785f..60a9ea7b446a16e46404e091d4171bab5e199c61 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-09-09  Øyvind Kolås  <pippin@gimp.org>
+
+       * babl/base/type-u16.c: (convert_double_u16_scaled):
+       * babl/base/type-u32.c: (convert_double_u32_scaled):
+       * babl/base/type-u8.c: (convert_double_u8_scaled),
+       (babl_base_type_u8):
+       * extensions/CIE-Lab.c: (convert_double_u8_scaled),
+       (convert_double_u16_scaled): uintval = rint (dval * MAXINT)
+
 2005-09-09  Øyvind Kolås  <pippin@gimp.org>
 
        * tests/conversions.c: (validate_conversion): do relative average
index e33997e2184e5e96a596d25b4ddba033cada6ab9..784e2237b848812158cd93caf5c5e19b821c1440 100644 (file)
@@ -20,6 +20,7 @@
 #include <string.h>
 #include <stdint.h>
 #include <assert.h>
+#include <math.h>
 
 #include "babl.h"
 #include "babl-ids.h"
@@ -46,7 +47,7 @@ convert_double_u16_scaled (double    min_val,
       else if (dval > max_val)
         u16val = max;
       else
-        u16val = (dval-min_val) / (max_val-min_val) * (max-min) + min;
+        u16val = rint((dval-min_val) / (max_val-min_val) * (max-min) + min);
 
       *(uint16_t *) dst = u16val;
       dst += dst_pitch;
index 94a4c09f993b92865aadd7c94b2a1996d230e9e5..990487cc32610691ce8844b2624aa9bee504a30a 100644 (file)
@@ -20,6 +20,7 @@
 #include <string.h>
 #include <stdint.h>
 #include <assert.h>
+#include <math.h>
 
 #include "babl.h"
 #include "babl-ids.h"
@@ -45,7 +46,7 @@ convert_double_u32_scaled (double    min_val,
       else if (dval > max_val)
         u32val = max;
       else
-        u32val = (dval-min_val) / (max_val-min_val) * (max-min) + min;
+        u32val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min);
 
       *(uint32_t *) dst = u32val;
       dst += dst_pitch;
index c874dfb1d4c71db47089a42982b2f9015ba71018..1f8b956d0ab1400f56e04bfdf8338aab9d8a4892 100644 (file)
 
 #include <string.h>
 #include <assert.h>
+#include <stdint.h>
 
 #include "babl.h"
 #include "babl-ids.h"
 
+#include <math.h>
 static inline long
 convert_double_u8_scaled (double        min_val,
                           double        max_val,
@@ -44,7 +46,7 @@ convert_double_u8_scaled (double        min_val,
       else if (dval > max_val)
         u8val = max;
       else
-        u8val = (dval-min_val) / (max_val-min_val) * (max-min) + min;
+        u8val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min);
 
       *(unsigned char *) dst = u8val;
       src += src_pitch;
@@ -106,7 +108,7 @@ convert_double_##name (void *src,                               \
                             src, dst, src_pitch, dst_pitch, n); \
 }
 
-MAKE_CONVERSIONS (u8,        0.0, (255.0F/256.0F)*1.0, 0x00, 0xff);
+MAKE_CONVERSIONS (u8,        0.0, 1.0, 0x00, UINT8_MAX);
 MAKE_CONVERSIONS (u8_luma,   0.0, 1.0, 16, 235);
 MAKE_CONVERSIONS (u8_chroma, 0.0, 1.0, 16, 240);
 
@@ -138,7 +140,6 @@ babl_base_type_u8 (void)
     "max_val",      0.5,
     NULL
   );
-
   babl_conversion_new (
     babl_type_id (BABL_U8),
     babl_type_id (BABL_DOUBLE),
@@ -151,8 +152,6 @@ babl_base_type_u8 (void)
     "plane",      convert_double_u8,
     NULL
   );
-
-
   babl_conversion_new (
     babl_type_id (BABL_U8_LUMA),
     babl_type_id (BABL_DOUBLE),
@@ -165,7 +164,6 @@ babl_base_type_u8 (void)
     "plane",      convert_double_u8_luma,
     NULL
   );
-
   babl_conversion_new (
     babl_type_id (BABL_U8_CHROMA),
     babl_type_id (BABL_DOUBLE),
index f00710a13e3775ae69a5857c5b30705419e8046b..d8aa6dba4a98f4c34d84570bfe0339581e6cc2c7 100644 (file)
@@ -312,7 +312,7 @@ convert_double_u8_scaled (double        min_val,
       else if (dval > max_val)
         u8val = max;
       else
-        u8val = (dval-min_val) / (max_val-min_val) * (max-min) + min;
+        u8val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min);
 
       *(unsigned char *) dst = u8val;
       src += src_pitch;
@@ -452,7 +452,7 @@ convert_double_u16_scaled (double         min_val,
       else if (dval > max_val)
         u16val = max;
       else
-        u16val = (dval-min_val) / (max_val-min_val) * (max-min) + min;
+        u16val = rint ((dval-min_val) / (max_val-min_val) * (max-min) + min);
 
       *(unsigned short *) dst = u16val;
       dst += dst_pitch;